package com.sondertara.common.crypto;

/**
 * @author huangxiaohu
 */
public class Explain {

    /*
     * 一、数字签名：
     * 通过提供 可鉴别 的 数字信息 验证 自身身份 的一种方式。一套 数字签名 通常定义两种 互补 的运算，
     * 一个用于 签名，另一个用于 验证。分别由 发送者 持有能够 代表自己身份 的 “私钥”（私钥不可泄露），
     * 由 接收者 持有与私钥对应的 “公钥”，能够在 接受 到来自发送者信息时用于 验证 其身份。
     */

    /*
     * 二、加密和解密
     * 1)、加密：
     * 数据加密的基础过程，就是对原来的 明文 的文件或数据按 某种算法 进行处理，使其成为 不可读 的
     * 一段代码，称为 “密文”。通过这样的途径，来达到 保护数据。
     * 2)、解密：
     * 加密的 逆过程 为解密，即将该 编码信息 转化为其 原来数据 的过程；
     */

    /*
     * 三、对称加密和非对称加密
     * 加密算法分 ”对称加密“ 和 “非对称加密”，其中对称加密算法的加密与解密的 密钥相同，非对称加密算法
     * 的加密密钥 与解密 密钥不同，此外，还有一类不需要密钥的 散列算法。
     * 常见的 对称加密算法： DES , 3DES ,AES等；
     * 常见的 非对称加密算法： RSA , DSA 等；
     * 散列算法：SHA-1 , MD5等
     * 
     * 1)、对称加密：
     * 又称为 “共享密钥加密算法” 。在对称加密算法中，使用的密钥只有一个， 发送 和 接收 双方都使用
     * 这个密钥对数据进行 加密和解密。*这就要加密和解密方事先都必须知道加密的密钥。
     * 
     * 流程：*加密和解密共享同一个密钥
     * ----------- 1、通过密钥加密生成 2、通过密钥解密 -----------
     * | 明文 | ---------------------> 密文 ---------------------> | 明文 |
     * ----------- -----------
     * 
     * 1、数据加密过程：
     * 在对称加密算法中，数据发送方 将明文（原始数据） 和加密密钥 一起经过特殊加密处理，
     * 生成复杂的 加密密文 进行发送；
     * 2、数据解密过程：
     * 数据接收方 收到密文后，若想读取原数据，则需要使用 加密使用的密钥 及相同算法的 逆算法
     * 对加密的密文进行解密，才能使其恢复成 可读明文；
     * 
     * 2)、非对称加密：
     * 又称为 “公开密钥加密算法”。它需要两个密钥，公开密钥，即公钥（public key）；另一个称为
     * 私有秘钥，即私钥（private key）
     * 因为 加密 和解密 使用的是两个不同的密钥，所以这种算法称为 非对称加密算法。
     * 常见的非对称加密：RSA 、 DSA
     * 
     * 流程：
     * ----------- 1、通过公钥加密 2、通过私钥解密 -----------
     * | 明文 | ---------------------> 密文 ---------------------> | 明文 |
     * ----------- -----------
     * 
     * 注意：
     * 1、如果使用 公钥 对数据 进行加密，只有用对应的 私钥 才能进行解密；
     * 2、如果使用 私钥 对数据 进行加密，只有用对应的 公钥 才能进行解密；
     * (通过私钥可以生成公钥)，（公钥加密体制中，一般用公钥加密，私钥解密）；
     * 即：非对称加密的公钥和私钥之间存在某一个公式关系
     * 
     * 例子：
     * 甲方生成 一对密钥，并将其中的一把作为 公钥 向其它人公开，
     * 得到该公钥的 乙方 使用该密钥(公钥)对机密信息 进行加密 后再发送给甲方，
     * 甲方再使用自己保存的另一把 专用密钥 (私钥)，对 加密 后的信息 进行解密。
     */

    /*
     * 三、摘要算法
     * 也称为 哈希算法、散列算法，可以将任意长度的数据转换成一个 定长的、不可逆的数字。只要文本不同
     * 计算的结果必然不同。摘要算法用于对比信息源是否一致，因为只要数据源发生变化，得到的
     * 摘要信息必然不同，通常用于签名校验。
     * 
     * 特点：
     * 1、无论输入的信息有多长，计算出来的消息摘要的长度总是固定的；
     * 2、消息摘要不是真正的随机，因为用相同的算法对相同的信消息两次摘要，其结果必然相同；
     * 3、消息摘要函数是无陷门的单向函数，即只能进行正向的消息摘要，而无法从摘要中恢复出任何
     * 的消息，甚至根本找不到任何与原消息相关的信息
     * 
     * 常见的摘要算法：MD5 ,SHA-1 , MAC ,CRC 等；
     * 
     */
}
